/**
 * 
 */
package br.skytef.stmanager.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Timestamp;
import java.util.Locale;

import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;

/**
 * @author Ivam Henrique Marques dos Santos
 *         email: ivam.santos@skytef.com.br
 *         skype: ivam.santos.skytef
 *         telefone: +55 11 96214-7543
 */
public class PlanCliente {

	private static Workbook planilha;
	private static Sheet sheet;

	private String  mensagemErro;
	public String getMensagemErro() {return mensagemErro;}
	public void setMensagemErro(String mensagemErro) {this.mensagemErro = mensagemErro;}

	private String softwareHouse;
	public String getSoftwareHouse() {return softwareHouse;}
	public void setSoftwareHouse(String softwareHouse) {this.softwareHouse = softwareHouse;}

	private String arquivoLicenca;
	public String getArquivoLicenca() {return arquivoLicenca;}
	public void setArquivoLicenca(String arquivoLicenca) {this.arquivoLicenca = arquivoLicenca;}

	private Timestamp dataInclusao;
	public Timestamp getDataInclusao() {return dataInclusao;}
	public void setDataInclusao(Timestamp dataInclusao) {this.dataInclusao = dataInclusao;}

	private Timestamp dataExclusao;
	public Timestamp getDataExclusao() {return dataExclusao;}
	public void setDataExclusao(Timestamp dataExclusao) {this.dataExclusao = dataExclusao;}

	private String tipoTarefa;
	public String getTipoTarefa() {return tipoTarefa;}
	public void setTipoTarefa(String tipoTarefa) {this.tipoTarefa = tipoTarefa;}

	private String tipoVPN;
	public String getTipoVPN() {return tipoVPN;}
	public void setTipoVPN(String tipoVPN) {this.tipoVPN = tipoVPN;}

	private String VPNAtiva;
	public String getVPNAtiva() {return VPNAtiva;}
	public void setVPNAtiva(String vPNAtiva) {VPNAtiva = vPNAtiva;}

	private String parceiro;
	public String getParceiro() {return parceiro;}
	public void setParceiro(String parceiro) {this.parceiro = parceiro;}

	private String comercial;
	public String getComercial() {return comercial;}
	public void setComercial(String comercial) {this.comercial = comercial;}

	private static String linhaErrada="";
	public String getLinhaErrada() {return linhaErrada;}

	private String razaoSocial;
	public String getRazaoSocial() {return razaoSocial;	}
	public void setRazaoSocial(String razaoSocial) {this.razaoSocial = razaoSocial;}

	private String nomeFantasia;
	public String getNomeFantasia() {return nomeFantasia;}
	public void setNomeFantasia(String nomeFantasia) {this.nomeFantasia = nomeFantasia;}

	private long cnpj;
	public long getCnpj() {return cnpj;	}
	public void setCnpj(long cnpj) {this.cnpj = cnpj;}

	private int qtdLojas;
	public int getQtdLojas() {return qtdLojas;}
	public void setQtdLojas(int qtdLojas) {this.qtdLojas = qtdLojas;}

	private String movimentacao;
	public String getMovimentacao() {return movimentacao;}
	public void setMovimentacao(String movimentacao) {this.movimentacao = movimentacao;}

	private String dataMovimentacao;
	public String getDataMovimentacao() {return dataMovimentacao;}
	public void setDataMovimentacao(String dataMovimentacao) {this.dataMovimentacao = dataMovimentacao;}
	
	private String responsavel;
	public String getResponsavel() {return responsavel;}
	public void setResponsavel(String responsavel) {this.responsavel = responsavel;}
		
	private String responsavelEmail;
	public String getResponsavelEmail() {return responsavelEmail;}
	public void setResponsavelEmail(String responsavelEmail) {this.responsavelEmail = responsavelEmail;	}
	
	private String telefone;
	public String getTelefone() {return telefone;}
	public void setTelefone(String telefone) {this.telefone = telefone;}
	
	private String emailCliente;
	public String getEmailCliente() {return emailCliente;}
	public void setEmailCliente(String emailCliente) {this.emailCliente = emailCliente;}
	
	private String atendSuporte;
	public String getAtendSuporte() {return atendSuporte;}
	public void setAtendSuporte(String atendSuporte) {	this.atendSuporte = atendSuporte;}
	
	private String produto;
	public String getProduto() {return produto;}
	public void setProduto(String produto) {this.produto = produto;}
	
	private String ramoAtividade;
	public String getRamoAtividade() {return ramoAtividade;}
	public void setRamoAtividade(String ramoAtividade) {this.ramoAtividade = ramoAtividade;}
	
	public PlanCliente(InputStream is) throws BiffException, IOException{
		WorkbookSettings workbookSettings = new WorkbookSettings();
		workbookSettings.setLocale(new Locale("pt", "BR"));
		workbookSettings.setExcelDisplayLanguage("PT");
		workbookSettings.setExcelRegionalSettings("BR");
		workbookSettings.setEncoding( "Cp1252" );
		planilha = Workbook.getWorkbook(is , workbookSettings);
		sheet = planilha.getSheet(0);	
	}

	public boolean validar(){
		try{
			if(!sheet.getCell(0,0).getContents().toUpperCase().trim().equals("RAZÃO SOCIAL")){
				mensagemErro = "Erro: Coluna \"RAZÃO SOCIAL\"";
				return false;
			}		
			else if(!sheet.getCell(1,0).getContents().toUpperCase().trim().equals("NOME FANTASIA")){
				mensagemErro = "Erro: Coluna \"NOME FANTASIA\"";
				return false;
			}
			else if(!sheet.getCell(2,0).getContents().toUpperCase().trim().equals("CNPJ")){
				mensagemErro = "Erro: Coluna \"CNPJ\"";
				return false;
			}
			else if(!sheet.getCell(3,0).getContents().toUpperCase().trim().equals("SOFTWARE HOUSE")){
				mensagemErro = "Erro: Coluna \"SOFTWARE HOUSE\"";
				return false;
			}
			else if(!sheet.getCell(5,0).getContents().toUpperCase().trim().equals("Nº LOJAS ATUALIZADOS")){
				mensagemErro = "Erro: Coluna \"Nº LOJAS ATUALIZADOS\"";
				return false;
			}
			else if(!sheet.getCell(6,0).getContents().toUpperCase().trim().equals("ARQUIVO DE LICENÇA")){
				mensagemErro = "Erro: Coluna \"ARQUIVO DE LICENÇA\"";
				return false;
			}
			else if(!sheet.getCell(7,0).getContents().toUpperCase().trim().equals("PRODUTO")){
				mensagemErro = "Erro: Coluna \"PRODUTO\"";
				return false;
			}
			else if(!sheet.getCell(8,0).getContents().toUpperCase().trim().equals("TIPO DE TAREFA")){
				mensagemErro = "Erro: Coluna \"TIPO DE TAREFA\"";
				return false;
			}
			else if(!sheet.getCell(9,0).getContents().toUpperCase().trim().equals("DATA DE INCLUSÃO S.E")){
				mensagemErro = "Erro: Coluna \"DATA DE INCLUSÃO S.E\"";
				return false;
			}
			else if(!sheet.getCell(10,0).getContents().toUpperCase().trim().equals("DATA DE EXCLUSÃO S.E")){
				mensagemErro = "Erro: Coluna \"DATA DE EXCLUSÃO S.E\"";
				return false;
			}
			else if(!sheet.getCell(11,0).getContents().toUpperCase().trim().equals("STATUS/OBSERVAÇÃO")){
				mensagemErro = "Erro: Coluna \"STATUS/OBSERVAÇÃO\"";
				return false;
			}
			else if(!sheet.getCell(12,0).getContents().toUpperCase().trim().equals("DATA DO STATUS")){
				mensagemErro = "Erro: Coluna \"DATA DO STATUS\"";
				return false;
			}
			else if(!sheet.getCell(13,0).getContents().toUpperCase().trim().equals("TIPO DE VPN")){
				mensagemErro = "Erro: Coluna \"TIPO DE VPN\"";
				return false;
			}
			else if(!sheet.getCell(14,0).getContents().toUpperCase().trim().equals("VPN ATIVA")){
				mensagemErro = "Erro: Coluna \"VPN ATIVA\"";
				return false;
			}
			else if(!sheet.getCell(15,0).getContents().toUpperCase().trim().equals("ENVIADO PARA - RESPONSÁVEL")){
				mensagemErro = "Erro: Coluna \"ENVIADO PARA - RESPONSÁVEL\"";
				return false;
			}
			else if(!sheet.getCell(16,0).getContents().toUpperCase().trim().equals("E-MAIL")){
				mensagemErro = "Erro: Coluna \"E-MAIL\"";
				return false;
			}
			else if(!sheet.getCell(17,0).getContents().toUpperCase().trim().equals("TEL")){
				mensagemErro = "Erro: Coluna \"TEL\"";
				return false;
			}
			else if(!sheet.getCell(18,0).getContents().toUpperCase().trim().equals("E-MAIL CLIENTE FINAL")){
				mensagemErro = "Erro: Coluna \"E-MAIL CLIENTE FINAL\"";
				return false;
			}
			else if(!sheet.getCell(19,0).getContents().toUpperCase().trim().equals("RAMO DE ATIVIDADE")){
				mensagemErro = "Erro: Coluna \"RAMO DE ATIVIDADE\"";
				return false;
			}
			else if(!sheet.getCell(20,0).getContents().toUpperCase().trim().equals("ATENDIMENTO")){
				mensagemErro = "Erro: Coluna \"ATENDIMENTO\"";
				return false;
			}
			else if(!sheet.getCell(21,0).getContents().toUpperCase().trim().equals("COMERCIAL RESPONSÁVEL")){
				mensagemErro = "Erro: Coluna \"COMERCIAL RESPONSÁVEL\"";
				return false;
			}
			else if(!sheet.getCell(22,0).getContents().toUpperCase().trim().equals("PARCEIRO RESPONSÁVEL")){
				mensagemErro = "Erro: Coluna \"PARCEIRO RESPONSÁVEL\"";
				return false;
			}else {
				return true;
			}
		}catch (Exception e){
			setMensagemErro("Planilha inválida");
			return false;
		}
	}

	public void importarlinha(int i){
		try{
			
			linhaErrada = (" Erro na linha:"+(i+1)+" CNPJ: " +sheet.getCell(2, i).getContents());
			
			setRazaoSocial(sheet.getCell(0,i).getContents().toUpperCase().trim());
			setNomeFantasia(sheet.getCell(1,i).getContents().toUpperCase().trim());
			setCnpj(new Cnpj().StringParaInteiro(sheet.getCell(2,i).getContents().toUpperCase().trim()));
			setSoftwareHouse(sheet.getCell(3,i).getContents().toUpperCase().trim());
			setQtdLojas(Integer.parseInt(sheet.getCell(5,i).getContents()));
			setArquivoLicenca(sheet.getCell(6,i).getContents().toUpperCase().trim());
			setProduto(sheet.getCell(7,i).getContents().toUpperCase().trim());
			setTipoTarefa(sheet.getCell(8,i).getContents().toUpperCase().trim());
			try {
				setDataInclusao(Timestamp.valueOf(sheet.getCell(9,i).getContents()));
			} catch (Exception e) {
				setDataInclusao(null);
			}
			try {
				setDataExclusao(Timestamp.valueOf(sheet.getCell(10,i).getContents()));
			} catch (Exception e) {
				setDataExclusao(null);
			}			
			setMovimentacao(sheet.getCell(11,i).getContents().toUpperCase().trim());
			setDataMovimentacao(sheet.getCell(12,i).getContents());
			setTipoVPN(sheet.getCell(13,i).getContents().toUpperCase().trim());
			setVPNAtiva(sheet.getCell(14,i).getContents().toUpperCase().trim());
			setResponsavel(sheet.getCell(15,i).getContents().toUpperCase().trim());
			setResponsavelEmail(sheet.getCell(16,i).getContents().toLowerCase().trim());
			setTelefone(sheet.getCell(17,i).getContents());
			setEmailCliente(sheet.getCell(18,i).getContents().toLowerCase().trim());
			setRamoAtividade(sheet.getCell(19,i).getContents().toUpperCase().trim());
			setAtendSuporte(sheet.getCell(20,i).getContents().toUpperCase().trim());
			setComercial(sheet.getCell(21,i).getContents().toUpperCase().trim());
			setParceiro(sheet.getCell(22,i).getContents().toUpperCase().trim());
			
			if(Integer.parseInt(sheet.getCell(5,i).getContents()) <= 0 || sheet.getCell(5,i).getContents() == null){
				System.out.println("Lojas: "+ sheet.getCell(5,i).getContents()+" CNPJ: "+ sheet.getCell(2,i).getContents());
			}
		}catch (Exception e){

		}
	}

	public int qtlinha(){
		Sheet sheet = planilha.getSheet(0);
		return sheet.getRows();
	}
}
